package com.wanho.qz103.hrsaas.commons.util;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;

import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

/**
 * 封装：根据请求参数 自动封装pojos
 */
public class RequestUtils {
    public static void parseRequest2Bean(Map<String,String[]> parameterMap,Object instance){
        try {
            // 注册 日期类型转换器  把用户输入的日期 转成 Date类型
            ConvertUtils.register(new Converter() {
                @Override
                public Object convert(Class clazz, Object value) {
                    //将String转化为date
                    SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    Date parse=null;
                    try {
                        //parse()返回的是一个Date类型数据，format返回的是一个StringBuffer类型的数据
                        parse =format.parse(value.toString());
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                    return parse;
                }
            }, Date.class);
            BeanUtils.populate(instance,parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}
